Skip to content

chore: migrate digicert signing action to Node.js 24 successor - BED-8168#196

Merged
StranDutton merged 7 commits into
mainfrom
BED-8168-upgrade-actions-to-node24
Jun 4, 2026
Merged

chore: migrate digicert signing action to Node.js 24 successor - BED-8168#196
StranDutton merged 7 commits into
mainfrom
BED-8168-upgrade-actions-to-node24

Conversation

@StranDutton
Copy link
Copy Markdown
Contributor

@StranDutton StranDutton commented May 13, 2026

digicert/ssm-code-signing has been deprecated by the upstream maintainer and will not receive further updates, including a Node.js 24 runtime upgrade. Per the maintainer's post, migrate to the successor action digicert/code-signing-software-trust-action@v1.2.1, which runs on Node.js 24. Needed because our runners will stop being able to run node20 dependencies later this year

Summary by CodeRabbit

  • Chores
    • Code signing switched to DigiCert's code-signing action using a transient decoded certificate.
    • Legacy signing toolchain and its verification loop were removed.
    • Signed Windows executables are produced and placed in a dedicated signed location.

@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented May 13, 2026

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: dff79887-7342-490b-a05a-dc502a340b06

📥 Commits

Reviewing files that changed from the base of the PR and between 7c26880 and 6996ef9.

📒 Files selected for processing (1)
  • .github/workflows/publish.yml
💤 Files with no reviewable changes (1)
  • .github/workflows/publish.yml

Walkthrough

Replaces the sign job’s osslsigncode/PKCS#11 flow with steps that base64-decode secrets.SM_CLIENT_CERT_FILE_B64 into a temp cert file, invoke digicert/code-signing-software-trust-action (simple-signing-mode) to sign the downloaded unsigned azurehound.exe, remove the temp cert file, and move the signed executable into signed/.

Changes

Publish workflow updates

Layer / File(s) Summary
DigiCert signing flow
.github/workflows/publish.yml
Decodes SM_CLIENT_CERT_FILE_B64 to a temporary SM_CLIENT_CERT_FILE, calls digicert/code-signing-software-trust-action in simple-signing-mode to sign the downloaded unsigned azurehound.exe, ensures the temp cert file is removed in an always() cleanup step, and moves the signed executable into signed/azurehound.exe; removes the previous osslsigncode + PKCS#11 signing and verification loop.

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~45 minutes

Possibly related PRs

Suggested reviewers

  • ktstrader

Poem

🐰 I hopped the CI lane tonight,
Decoded certs by soft moonlight,
Swapped the signer, ran the flow,
Cleaned the temp, then let it go,
Signed exe tucked in — all is right.

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title accurately describes the main change: migrating from a deprecated DigiCert signing action to a Node.js 24-compatible successor action, which is the primary objective of the PR.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch BED-8168-upgrade-actions-to-node24

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

…8168

digicert/ssm-code-signing has been deprecated by the upstream maintainer
and will not receive further updates, including a Node.js 24 runtime upgrade.
Per the maintainer's guidance, migrate to the successor action
digicert/code-signing-software-trust-action@v1.2.1, which runs on Node.js 24
and preserves the PKCS11_CONFIG output our sign job consumes.

Upstream notice: digicert/ssm-code-signing#60
@StranDutton StranDutton force-pushed the BED-8168-upgrade-actions-to-node24 branch from 8f741ad to be00a7d Compare May 13, 2026 17:14
@StranDutton
Copy link
Copy Markdown
Contributor Author

StranDutton commented May 13, 2026

Pushed a temporary commit to confirm that the signing step still works as expected with the update! Link to workflow run (successful sign steps are evidence): https://github.com/SpecterOps/AzureHound/actions/runs/26586418645 (EDIT: link updated 6/3/2026)

@StranDutton StranDutton self-assigned this May 13, 2026
@StranDutton StranDutton added the dependencies Pull requests that update a dependency file label May 13, 2026
…8168

digicert/ssm-code-signing has been deprecated by the upstream maintainer
and will not receive further updates, including a Node.js 24 runtime upgrade.
Per the maintainer's guidance, migrate to the successor action
digicert/code-signing-software-trust-action@v1.2.1, which runs on Node.js 24
and preserves the PKCS11_CONFIG output our sign job consumes.

Upstream notice: digicert/ssm-code-signing#60
@StranDutton StranDutton force-pushed the BED-8168-upgrade-actions-to-node24 branch from be00a7d to d8d13d5 Compare May 21, 2026 21:10
Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 3

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In @.github/workflows/publish.yml:
- Around line 114-117: The "Move Signed Artifacts" job step runs mv to place the
built binary into signed/ but the signed/ directory is not created, causing mv
to fail; update that step (the line containing mv unsigned/azurehound-bin-${{
matrix.os }}-${{ matrix.arch }}/azurehound.exe signed/azurehound.exe) to ensure
the destination directory exists first (e.g., create signed/ with mkdir -p
signed/ or equivalent) before running mv so the move succeeds reliably.
- Around line 100-112: The workflow step with id "digicert" incorrectly includes
a step-level "shell: bash" (only valid for run steps) and a broken env variable
reference; remove the "shell: bash" line from the Digicert action step and
replace the SM_CLIENT_CERT_FILE env value that currently uses shell expansion
(${SM_CLIENT_CERT_FILE}) with a proper GitHub Actions expression such as ${{
env.SM_CLIENT_CERT_FILE }} (if you set it via GITHUB_ENV earlier) or reference a
secret directly like ${{ secrets.SM_CLIENT_CERT_FILE }} so the env block uses
valid Actions syntax.
- Around line 94-98: Fix the certificate setup step: correct the temp variable
to RUNNER_TEMP, fix the filename typo to "Certificate", and replace the failing
export-with-pipe by echoing the secret (use echo "${{
secrets.SM_CLIENT_CERT_FILE_B64 }}" | base64 --decode > "$SM_CLIENT_CERT_FILE"
or equivalent). Also ensure SM_CLIENT_CERT_FILE is exported for later steps by
writing the path into $GITHUB_ENV (e.g., echo "SM_CLIENT_CERT_FILE=/path" >>
$GITHUB_ENV) or by providing the path via the step/action env block so
downstream steps can access it; update references to SM_CLIENT_CERT_FILE and
SM_CLIENT_CERT_FILE_B64 accordingly.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: f16a108f-16b2-4673-beb0-ec250b7efdfa

📥 Commits

Reviewing files that changed from the base of the PR and between d8d13d5 and 51b550b.

📒 Files selected for processing (1)
  • .github/workflows/publish.yml

Comment thread .github/workflows/publish.yml Outdated
Comment thread .github/workflows/publish.yml
Comment thread .github/workflows/publish.yml
@ddlees ddlees force-pushed the BED-8168-upgrade-actions-to-node24 branch 2 times, most recently from 71d52f6 to 019385d Compare May 28, 2026 15:20
@ddlees ddlees force-pushed the BED-8168-upgrade-actions-to-node24 branch from 019385d to b8de6c9 Compare May 28, 2026 15:37
Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In @.github/workflows/publish.yml:
- Line 7: Sanitize github.ref_name before using it in FILE_NAME by replacing
path characters so branch names like feature/foo don't create nested paths:
update the FILE_NAME assignment (and any places that reference it for 7z and
sha256sum) to use the GitHub Actions expression replace(github.ref_name, '/',
'-') (or a similar replace for other unsafe chars) e.g. set FILE_NAME to ${{
replace(github.ref_name, '/', '-') }} so archives created by 7z and sha256sum
use a safe flat filename.
- Line 139: The workflow currently gates an AWS-dependent job with "if:
github.event_name != 'workflow_dispatch'" but still runs the
aws-actions/configure-aws-credentials step (the step using
aws-actions/configure-aws-credentials around Lines 85-89), causing manual
workflow_dispatch runs to depend on AWS secrets; fix by applying the same gating
to that step (or add an equivalent if conditional to the
configure-aws-credentials step) so configure-aws-credentials only executes when
github.event_name != 'workflow_dispatch', ensuring manual sign-only runs don't
require AWS secrets.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 2f263d63-9c15-4619-9ae7-c2337e3f28bf

📥 Commits

Reviewing files that changed from the base of the PR and between b8de6c9 and e263452.

📒 Files selected for processing (1)
  • .github/workflows/publish.yml

Comment thread .github/workflows/publish.yml Outdated
Comment thread .github/workflows/publish.yml Outdated
Comment thread .github/workflows/publish.yml
@StranDutton StranDutton merged commit 195e96f into main Jun 4, 2026
10 checks passed
@StranDutton StranDutton deleted the BED-8168-upgrade-actions-to-node24 branch June 4, 2026 20:21
@github-actions github-actions Bot locked and limited conversation to collaborators Jun 4, 2026
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

dependencies Pull requests that update a dependency file

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants